課程資訊
課程名稱
系統程式設計
Systems Programming 
開課學期
100-1 
授課對象
資訊工程學系  
授課教師
鄭卜壬 
課號
CSIE2210 
課程識別碼
902 25900 
班次
02 
學分
全/半年
半年 
必/選修
必帶 
上課時間
星期三2,3,4(9:10~12:10) 
上課地點
資101 
備註
限學士班二年級以上 且 限本系所學生(含輔系、雙修生) 且 限學號雙號
總人數上限:80人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/1001spcsie 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

隨著電腦系統的快速演進,若程式設計師無法有效利用電腦在軟體方面所提供的服務與硬體方面所提供的資源,再強大的電腦系統也無法充份發揮其功能。基礎的程式語言(programming language)課程主要是教導學生熟悉一程式語言,並且有能力實作資料結構與演算法則以解決問題。然而,為有效使用系統資源,除了基本的程式設計能力外,學生必須了解電腦作業系統(operating system)如何運作,作業系統提供哪些服務以協助程式使用系統資源,學生亦需有能力檢視程式的正確性、安全性與分析所寫的程式是否可能造成系統資源的浪費。
本課程內容旨在介紹電腦在系統層次的主要概念,學生將學習如何在UNIX相關作業系統上利用各種系統服務開發應用程式。由於UNIX相關作業系統同時支援多個使用者、多個行程(process)及多個中央處理器(CPU),使用此類系統資源時,程式必須考慮檔案存取權限的問題、資料保密與系統安全的問題、不同行程間的通訊問題、多個行程同時執行的同步(synchronization)問題、處理各種事件產生的訊號(signal)問題等,這些問題皆與電腦作業系統習習相關。本課程首先介紹UNIX相關作業系統的主要概念,讓修課同學了解此類系統所提供的運算能力與執行環境,建立UNIX作業系統相關概念的理論基礎,進而學習應用各種系統服務的技巧,以培養其將來從事與系統層次相關之程式開發能力。
 

課程目標
本課程的目標在於讓修課同學:
.熟悉UNIX相關作業系統的操作環境。
.理解UNIX相關作業系統之系統架構與系統服務。
.學習UNIX系統服務之應用程式介面(API)的相關標準。
.有能力在UNIX相關作業系統上,以C程式語言開發程式。
.有能力撰寫一產生多行程的程式,並處理多行程間的通訊與同步。
.有能力分析程式的正確性、安全性與執行效能。
 
課程要求
 
預期每週課後學習時數
 
Office Hours
每週二 09:00~12:00 備註: R323 
指定閱讀
Advanced Programming in the Unix Environment, 2nd Edition,
by Richard Stevens and Steven A Rago, Addison-Wesley, 2005 
參考書目
.Understanding UNIX/LINUX Programming: A Guide to Theory and Practice,
    by Bruce Molay, Prentice Hall, 2002.
.The Art of Unix Programming, by Eric S. Raymond.
.Managing Projects with make, by Andrew Oram and Steve Talbott, 1991. 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
Midterm Exam 
35% 
 
2. 
Final Exam 
35% 
 
3. 
Assignments 
30% 
 
 
課程進度
週次
日期
單元主題
第1週
9/14  Course Overview & OS Concepts 
第2週
9/21  UNIX Standardization 
第3週
9/28  Buffered I/O 
第4週
10/05  Advanced I/O 
第5週
10/12  File System